x86/mm: Fix guard hole handling
authorKirill A. Shutemov <kirill.shutemov@linux.intel.com>
Fri, 30 Nov 2018 20:23:27 +0000 (23:23 +0300)
committerSalvatore Bonaccorso <carnil@debian.org>
Sat, 22 Dec 2018 08:06:45 +0000 (08:06 +0000)
commit068a7e652cb6445002c39c3329b7a6acb11ea09e
treeb8269e90bb3bebeb1ffae7944efc61a9ae799590
parentc10639430df455700f8559b20e11fc912903ba38
x86/mm: Fix guard hole handling

There is a guard hole at the beginning of the kernel address space, also
used by hypervisors. It occupies 16 PGD entries.

This reserved range is not defined explicitely, it is calculated relative
to other entities: direct mapping and user space ranges.

The calculation got broken by recent changes of the kernel memory layout:
LDT remap range is now mapped before direct mapping and makes the
calculation invalid.

The breakage leads to crash on Xen dom0 boot[1].

Define the reserved range explicitely. It's part of kernel ABI (hypervisors
expect it to be stable) and must not depend on changes in the rest of
kernel memory layout.

[1] https://lists.xenproject.org/archives/html/xen-devel/2018-11/msg03313.html

Fixes: d52888aa2753 ("x86/mm: Move LDT remap out of KASLR region on 5-level paging")
Reported-by: Hans van Kranenburg <hans.van.kranenburg@mendix.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Tested-by: Hans van Kranenburg <hans.van.kranenburg@mendix.com>
Reviewed-by: Juergen Gross <jgross@suse.com>
Cc: bp@alien8.de
Cc: hpa@zytor.com
Cc: dave.hansen@linux.intel.com
Cc: luto@kernel.org
Cc: peterz@infradead.org
Cc: boris.ostrovsky@oracle.com
Cc: bhe@redhat.com
Cc: linux-mm@kvack.org
Cc: xen-devel@lists.xenproject.org
Link: https://lkml.kernel.org/r/20181130202328.65359-2-kirill.shutemov@linux.intel.com
Gbp-Pq: Topic bugfix/x86
Gbp-Pq: Name x86-mm-Fix-guard-hole-handling.patch
arch/x86/include/asm/pgtable_64_types.h
arch/x86/mm/dump_pagetables.c
arch/x86/xen/mmu_pv.c